package cn.xiaolang.function.design_pattern.singleton;

/**
 * 单例模式： 登记式/ 静态内部类（推荐）
 * <p>
 * 线程安全，懒加载；
 * <p>
 * 创建一个内部类来实现成员变量的初始化，
 * 则可以避免多线程下重复创建对象的情况发生。这种方式，只有在第一次调用 getInstance() 方法时，
 * 才会加载 SingleTon 类，而只有在加载 SingleTon 类之后，才会实例化创建对象
 *
 * @author fuhw/Dean
 * @date 2020-04-29
 */
public class SingleTonByStaticInternal {


    private SingleTonByStaticInternal() {
    }

    private static class SingleTon {
        private static SingleTonByStaticInternal instance = new SingleTonByStaticInternal();
    }

    public static SingleTonByStaticInternal getInstance() {
        return SingleTon.instance;
    }
}
